//method 的 继承
package main

import (
	"fmt"
)

type Human struct {
	name  string
	age   int
	phone string
}

//定义一个作用于Humman这个结构体的方法
func (h *Human) SayHi() {
	//下面用的是Printf函数！不是那个会自动换行的Println
	fmt.Printf("Hi! my name is %s ,you can call me on %s \n", h.name, h.phone)
}

//Student这个结构体包含了Humman结构体，自然继承了Humman的方法
type Student struct {
	Human
	school string
}

//Employee这个结构体包含了Humman结构体，自然继承了Humman的方法
type Employee struct {
	Human
	company string
}

func main() {
	mark := Student{Human{"mark", 20, "123-789"}, "MIT"}
	tom := Employee{Human{"tom", 40, "400-400-888"}, "Apple Company"}
	mark.SayHi() //可以调用作用于匿名字段的方法
	tom.SayHi()  //可以调用作用于匿名字段的方法
}
